import axios from 'axios'
// import router from '@/router'
import { errorMsg } from '@/utils/sendMsgUtils.js'
import { useUserState } from '@/stores/index.js'
import { useRouter } from 'vue-router'


// 这里配置 baseUrl
const baseURL = window.config.baseUrl
// const baseURL = '/api'
const router = useRouter()
const instance = axios.create({
  // 1. 基础地址，超时时间
  baseURL,
  timeout: 50000,
  withCredentials: true
})

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 2. 携带 token

    // 连接userState仓库
    const userState = useUserState()

    if (userState.token) config.headers.Authorization = userState.token

    return config
  },
  (err) => Promise.reject(err)
)

// 响应拦截器
instance.interceptors.response.use(
  async (res) => {
    const { code, msg } = res.data

    if (code === 0 && msg === '验证码错误') return res.data

    if (code === 1) return res.data // 返回成功的数据

    /*
   // 账号在其他设备登录处理
   if (msg.startsWith('检测到账号已在别的设备登录')) {
     await handleLoginRedirect(msg, true)
     return Promise.reject(msg)
   }*/

    // 其他业务错误处理
    if (code === 0) errorMsg(msg)

    return res.data
  },
  (err) => {
    if (err.response) {
      const status = err.response.status
      if (status === 401) {
        errorMsg('登录验证失效，请重新登录')
        router.push('/user/login')
      }else {
        errorMsg('网站发生异常，请稍后尝试！')
      }
    }

    return Promise.reject(err)
  }
)



export default instance
export { baseURL }
